package verfahren;

import java.awt.Color;

import controll.SchedulingSimulatorController;

public class FirstComeFirstServed extends SchedulingVerfahren {
	boolean allDone = false;
	double wartezeit = 0;
	int tmp = 1;

	public FirstComeFirstServed(int anzahlThreads, int[] cpuLaufZeit, SchedulingSimulatorController controller) {
		super(anzahlThreads , cpuLaufZeit, controller);
		this.controller = controller;

	}

	@Override
	public void verwalteThreads() {


		for(MyThread th : threads) {
			th.t.start();
			while (th.t.isAlive()) {
				// warte bis Threads fertig ist
			}

			/*
			 * Zeiche ein neues Rechteck und aktualisiere GUI
			 */
			if(th.getlaufZeit() != 0) {
				controller.getView().addRect(th.getID(), th.getGelaufeneZeit(), th.getGewarteteZeit(), th.getColor());
				controller.getView().reDraw();
			}

			summe += th.getlaufZeit();
			
			laufzeit += summe;
			if(tmp != threads.length) wartezeit +=summe;
			tmp ++;

		}
		laufzeit = laufzeit/threads.length;
		wartezeit = wartezeit/threads.length;
	}

	@Override
	public void erzeugeThreads() {
		for (int i = 0; i < threads.length; i++) {
			threads[i] = new MyThread(i,cpuLaufZeit[i],randomColor());

		}
	}

	@Override
	public double berechneLaufZeit() {
		return laufzeit;
	}

	@Override
	public double berechneWartezeit() {
		return wartezeit;
	} 


}
